<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * //Descripción del controlador
 *  
 */
class ABM_Comisiones extends CI_Controller {
    function __construct() {
        parent::__construct();
        
        //Si el usuario no está logueado redirijo al modulo de login.
        if(!$this->autenticacion->logueado()){
            redirect('admin/usuarios');
        }
        
        //ZONA DE CARGA DE LIBRERIAS, HELPERS Y MODELOS
        $this->load->library('grocery_CRUD');
        
        $this->load->helper('form');
        $this->load->helper('html');
        
        $this->load->model('Alumnos_Model');
        $this->load->model('Cursos_Model');
        $this->load->model('Niveles_Model');
        $this->load->model('Comisiones_Model');
        
        //ZONA DE INICIALIZACIÓN DE VARIABLES
        $this->encabezado['usuario']=  $this->session->userdata('usuario');
        $this->menu['menu']='comisiones';
        $this->menu['submenu']='comisiones';
       
    }
    
    function index(){
        $this->abm();
    }
    
    function abm(){
        //Creo el objeto crud
        $crud = new grocery_CRUD();

        //Defino Template como datatables.
        //$crud->set_theme('datatables');

        //Defino tabla sobre la que trabajo y tipo de 'Objeto'
        $crud->set_table('Comisiones');
        $crud->set_subject('Comision');
        
        //Quito el botones borrar.
        $crud->unset_delete();
        
        //Agrego la acción para ver los detalles del curso.
        $crud->add_action('Ver detalles', base_url().'assets/grocery_crud/themes/flexigrid/css/images/magnifier.png', 'admin/abm_comisiones/detalles_comision','');
        
        //Defino Relaciones 1-n
        $crud->set_relation('idCurso', 'Cursos', 'titulo');
        $crud->set_relation('idNivel', 'Niveles', 'descripcion');
        
        //Seteo reglas
        $crud->set_rules('idCurso', 'Curso', 'required|callback__controlar_curso');
        $crud->set_rules('idNivel', 'Nivel', 'required|callback__controlar_nivel_curso');
        
        //Seteo campos requeridos
        $crud->required_fields('idCurso', 'idNivel', 'fechaInicio', 'estado');
        
        $crud->columns('idCurso', 'idNivel', 'fechaInicio', 'estado');
        
        //Defino nombres para cada campo.
        $crud->display_as('idCurso', 'Curso');
        $crud->display_as('idNivel', 'Nivel');
        $crud->display_as('fechaInicio', 'Fecha de Inicio');
        $crud->display_as('estado', 'Estado');
        $crud->display_as('temasADictar', 'Temas a Dictar');
        $crud->display_as('temasDictados', 'Temas Dictados');
        
        $crud->callback_before_insert(array($this, '_temas_a_dictar_por_defecto'));
        $crud->callback_after_insert(array($this, '_callback_insercion'));
        $crud->callback_after_update(array($this, '_callback_edicion'));
        
        //Genero el ABM
        $output=$crud->render();

        //Llamo a la función encargada de mostrar el ABM.
        $this->mostrar_crud($output);
    }
    
     private function mostrar_crud($output = null, $vista='abm_view', $data = NULL) {   
        
        $this->encabezado['abm']=TRUE;
        $this->encabezado['js_files']=$output->js_files;
        $this->encabezado['css_files']=$output->css_files;
        
        $this->load->view('admin/template/encabezado', $this->encabezado);
        $this->load->view('admin/template/menu', $this->menu);
        $this->load->view("admin/abm_comisiones/$vista", $data);
        $this->load->view('admin/crud/crud_view',$output);	
        $this->load->view('admin/template/footer');
	}

    function _transformar_htmlentities(){
        $post_array=$this->input->post();
        
        //Convierto a 'acute' los campos necesarios.
        $post_array['diaSemana']=htmlentities($post_array['diaSemana']);
        
        return $post_array;
    }
    
    function _callback_insercion($post_array, $primary_key){
        //Inserto el registro
        $registro="Insertó comision id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
    
    function _callback_edicion($post_array, $primary_key){
        //Inserto el registro
        $registro="Editó comision id: $primary_key";
        $this->registro_actividad->cargar_registro($this->session->userdata('id'), $registro);
    }
    
    function _temas_a_dictar_por_defecto(){
        $post_array=$this->input->post();
        
        //Convierto a 'acute' los campos necesarios.
        if($post_array['temasADictar']==""){
            $temas=$this->Cursos_Model->get_temario_nivel_curso($post_array['idCurso'], $post_array['idNivel']);
            $post_array['temasADictar']= $temas['temario'];        
        }
        
        return $post_array;
    }
    
    function _controlar_curso($str){
        $this->session->set_userdata(array('idCurso'=>$str));
        return TRUE;
    }
    
    function _controlar_nivel_curso($str){
        $idCurso =  $this->session->userdata('idCurso');
        $this->session->unset_userdata('idCurso');
        $idNivel = $str;
        
        $x = $this->Cursos_Model->existe_nivel_curso($idCurso, $idNivel);
        
        if($x['cuenta'] == 1){
            return TRUE;
        }
        else {
            $this->form_validation->set_message('_controlar_nivel_curso', 'El nivel no se encuentra definido para el curso');
            return FALSE;
        }
    }
    
    function detalles_comision($idComision){
        $data['comision'] =  $this->Comisiones_Model->getComision($idComision);
        $data['curso'] = $this->Cursos_Model->getCurso($data['comision']['idCurso']);
        $data['nivel'] = $this->Cursos_Model->get_nivel($data['comision']['idNivel']);
        //Creo el objeto crud
        $crud = new grocery_CRUD();

        //Defino Template como datatables.
        //$crud->set_theme('datatables');

        //Defino tabla sobre la que trabajo y tipo de 'Objeto'
        $crud->set_table('DiasCursado');
        $crud->set_subject('D&iacute;a de Cursado');
        $crud->where('idComision', $idComision);
        
        //Quito el botones borrar.
        //$crud->unset_delete();
        
        //Seteo campos requeridos
        $crud->required_fields('idComision', 'diaSemana', 'horaInicio');
        
        $crud->change_field_type('idComision', 'hidden', $idComision);
        
        $crud->columns('diaSemana', 'horaInicio');
        //Defino nombres para cada campo.
        $crud->display_as('idComision', 'Comision');
        $crud->display_as('diaSemana', 'D&iacute;a de la Semana');
        $crud->display_as('horaInicio', 'Hora de Inicio');
        
        //Hago 'callbacks' para transformar datos antes de inserción/actualización.
        //$crud->callback_before_insert(array($this, '_transformar_htmlentities'));
        //$crud->callback_before_update(array($this, '_transformar_htmlentities'));
        
        //Genero el ABM
        $output=$crud->render();
        
        //Hago que en el encabezado se cargue el shadowbox.
        $this->encabezado['shadowbox']=TRUE;
        
        //Llamo a la función encargada de mostrar el ABM.
        $this->mostrar_crud($output, 'detalles_comision_view', $data);
    }
    
    function generar_asistencia($idComision){
        //Recupero datos comision
        $comision = $this->Comisiones_Model->getComision($idComision);
        
        $curso = $this->Cursos_Model->getCurso($comision['idCurso']) ;
        
        $nivel = $this->Niveles_Model->getNivel($comision['idNivel']);
        
        $diasCursado = "<br/>";
        foreach($this->Comisiones_Model->get_dias_cursado($idComision) as $dia){
            $diasCursado.= $dia['diaSemana']." ".$dia['horaInicio']."  -"; 
        }
        
        $data['comision_linea'] = "ID: $idComision - ".$curso['titulo']." - ".$nivel['descripcion'].":$diasCursado"; 
        
        //Recupero alumnos de la comisión.
        $data['alumnos']=  $this->Alumnos_Model->get_alumnos_comision($idComision);
        
        $this->load->view('admin/abm_comisiones/asistencia_view', $data);
    }
}
    
/* End of file abm_comisiones.php */
/* Location: ./application/controllers/abm_comisiones.php */